#include<iostream>
#include<cstdlib>



int main()
{
    // int *a=(int*)malloc(sizeof(int));
    // if(a == nullptr)
    //     return -1;
    // *a = 10;
    // std::cout<<*a<<std::endl;
    // free(a);



    // new 关键字
    // 1、不需要计算空间大小，直接跟着类型就行
    // 2、返回指针不需要强制转换
    // 3、不需要对指针 判空   如果申请失败，new会抛出异常，终止程序
    // int *a = new int;
    // //delete
    // delete a;


    // int *a = new int[10];
    // for(int i=0;i<10;i++)
    // {
    //     a[i]= i+1;
    // }


    // for(int i=0;i<10;i++)
    // {
    //    std::cout<<a[i]<<" ";
    // }
    // std::cout<<std::endl;

    // // 释放数组  
    // delete []a;



    int **a = new int*[2];
    for(int i=0;i<2;i++)
    {
        a[i] = new int[3];
    }

    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            a[i][j]= i*3+j;
        }
    }

    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            std::cout<<a[i][j]<<" ";
        }
        std::cout<<std::endl;
    }

    for(int i=0;i<2;i++)
    {
        delete []a[i];
    }

    delete []a;
    return 0;
}